package com.eian.boot.module.system.permission.model.entity;

import com.eian.boot.mybatis.core.model.BaseEntity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

/**
 * 菜单权限表 实体类。
 *
 * @author alex.meng
 * @since 1.0.0
 */
@EqualsAndHashCode(callSuper = true)
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Table(value = "t_sys_permission")
public class SysPermissionEntity extends BaseEntity {

    /**
     * 父菜单ID，0表示顶级菜单
     */
    @Column(value = "parent_id")
    private Long parentId;

    /**
     * 权限名，用于页面展示（也是菜单名）
     */
    @Column(value = "name")
    private String name;

    /**
     * 权限编码
     */
    @Column(value = "code")
    private String code;

    /**
     * 权限类型：1-目录（模块），2-菜单，3-按钮（API）
     */
    @Column(value = "type")
    private Integer type;

    /**
     * 用于菜单权限-页面路径
     */
    @Column(value = "url")
    private String url;

    /**
     * 用于菜单权限-菜单图标
     */
    @Column(value = "icon")
    private String icon;

    /**
     * 用于菜单权限-页面组件路径
     */
    @Column(value = "component")
    private String component;

    /**
     * 用于菜单权限-重定向路径
     */
    @Column(value = "redirect")
    private String redirect;

    /**
     * 用于菜单权限-是否外部页面：1-是，0-否
     */
    @Column(value = "is_external")
    private Integer isExternal;

    /**
     * 用于菜单权限-是否开启页面缓存：1-是，0-否
     */
    @Column(value = "is_cache")
    private Integer isCache;

    /**
     * 用于菜单权限-页面是否（菜单）可见：1-显示，0-隐藏
     */
    @Column(value = "is_visible")
    private Integer isVisible;

    /**
     * 菜单权限：1-显示，0-停用（区别visible）
     * 按钮权限：1-正常鉴权，0-跳过鉴权
     */
    @Column(value = "status")
    private Integer status;

    /**
     * 用于菜单权限-菜单排序
     */
    @Column(value = "sort_order")
    private Integer sortOrder;

    /**
     * 权限描述
     */
    @Column(value = "description")
    private String description;
}
